﻿/**
 * 主处理函数 - 根据URL参数生成网页配置
 * @param {Object} item - 输入参数对象
 * @returns {Object} 包含网页配置的对象
 */
function main(item) {
    // 解析URL参数
    const url = item.url;                          // 获取原始URL
    const id = ku9.getQuery(url, "id");            // 从URL中提取id参数
    const domainParts = id.split('/');             // 将id按斜杠分割成数组
    
    // 设置请求头
    let headers;
    if (['www.cditv.cn', 'https://iptv345.com'].includes(domainParts[2])) {  // 判断是否为移动端域名
        headers = { // 移动端User-Agent
            'User-Agent': 'Mozilla/5.0 (Linux; Android 10; HMA-AL00 Build/HUAWEIHMA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.93 Mobile Safari/537.36'
        };
    } else {  // 桌面端User-Agent
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
        };
    }

    // 注入页面的JavaScript代码
    const pageScript = `
        (function() {
            // 初始化配置
            const MAX_WAIT_TIME = 15000;  // 最大等待时间(15秒)
            const CHECK_INTERVAL = 100;   // 检查间隔(100毫秒)
            const startTime = Date.now();
            
            // 设置基础页面样式
            document.documentElement.style.cssText = \`
                background-color: black;
                margin: 0;
                padding: 0;
                overflow: hidden;
            \`;
            document.body.style.cssText = \`
                visibility: hidden;
                margin: 0;
                padding: 0;
                overflow: hidden;
            \`;

            /**
             * 查找视频元素 - 优先查找Shadow DOM中的video
             */
            function findVideoElement() {
                // 遍历所有可能包含Shadow DOM的元素
                const elements = document.querySelectorAll('*');
                for (const element of elements) {
                    const shadowRoot = element.shadowRoot;
                    if (shadowRoot) {
                        const video = shadowRoot.querySelector('video');
                        if (video) return video;
                    }
                }
                return document.querySelector('video');  // 普通video元素
            }

            /**
             * 移除视频控制条 - 删除常见控制条选择器
             */
            function removeVideoControls() {
                const controlSelectors = [
                    '#control_bar', 
                    '.controls', 
                    '.vjs-control-bar', 
                    'xg-controls'
                ];
                controlSelectors.forEach(selector => {
                    document.querySelectorAll(selector).forEach(e => e.remove());
                });
            }

            /**
             * 配置视频容器 - 创建全屏容器并设置视频样式
             * @param {HTMLVideoElement} video 
             */
            function setupVideoContainer(video) {
                // 创建全屏容器
                const container = document.createElement('div');
                container.style.cssText = \`
                    position: fixed;
                    top: 0;
                    left: 0;
                    width: 100vw;
                    height: 100vh;
                    z-index: 2147483647;
                    background: black;
                    display: flex;
                    justify-content: center;
                    align-items: center;
                \`;

                // 设置视频样式
                video.style.cssText = \`
                    width: 100%;
                    height: auto;
                    max-width: 100%;
                    max-height: 100%;
                    object-fit: contain;
                \`;
                video.muted = false;
                video.volume = 1;
                video.autoplay = true;

                // 组合元素
                container.appendChild(video);
                document.body.appendChild(container);
            }

            /**
             * 进入全屏模式
             * @param {HTMLElement} element 
             */
            function activateFullscreen(element) {
                const fullscreenMethods = [
                    'requestFullscreen',
                    'webkitRequestFullscreen'
                ];
                fullscreenMethods.some(method => {
                    if (element[method]) {
                        element[method]();
                        return true;
                    }
                });
            }

            // 主检查函数
            const videoCheckInterval = setInterval(() => {
                // 超时处理
                if (Date.now() - startTime > MAX_WAIT_TIME) {
                    clearInterval(videoCheckInterval);
                    document.body.style.visibility = 'visible';
                    return;
                }

                const video = findVideoElement();
                if (video && video.readyState > 0) {  // 视频已加载
                    clearInterval(videoCheckInterval);
                    removeVideoControls();
                    setupVideoContainer(video);
                    activateFullscreen(video.parentElement);
                    document.body.style.visibility = 'visible';
                }
            }, CHECK_INTERVAL);
        })();
    `;

    return {
        webview: id,      // 加载的网页ID
        headers: headers, // 请求头配置
        jscode: pageScript // 注入的页面脚本
    };
}
